package com.jay.loadbalancer;

import com.jay.model.ServiceMetaInfo;

import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * 随机负载均衡器
 * 实现了LoadBalancer接口，用于在多个服务实例中随机选择一个
 */
public class RandomLoadBalancer implements LoadBalancer {

    // 使用Random类生成随机数
    private final Random random = new Random();

    /**
     * 选择一个服务实例
     *
     * @param requestParams 请求参数，本实现中未使用，但可能在扩展时用于更复杂的逻辑
     * @param serviceMetaInfoList 服务实例列表，从中选择一个实例
     * @return 返回选择的服务实例，如果没有可用的服务实例则返回null
     */
    @Override
    public ServiceMetaInfo select(Map<String, Object> requestParams, List<ServiceMetaInfo> serviceMetaInfoList) {
        int size = serviceMetaInfoList.size();
        // 如果服务列表为空，返回null
        if (size == 0) {
            return null;
        }
        // 只有一个服务实例，直接返回，无需选择
        if (size == 1) {
            return serviceMetaInfoList.get(0);
        }
        // 随机选择一个服务实例并返回
        return serviceMetaInfoList.get(random.nextInt(size));
    }
}
